home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / PCIKernel.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  4KB  |  136 lines

  1. /*
  2.      File:        PCIKernel.h
  3.  
  4.      Contains:    All definitions, prototypes, and constants for the PCI Family.
  5.  
  6.      Version:    Technology:    xxx put the technology version here xxx
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __PCIKERNEL__
  19. #define __PCIKERNEL__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __SYNCHRONIZATION__
  25. #include <Synchronization.h>
  26. #endif
  27. #ifndef __NAMEREGISTRY__
  28. #include <NameRegistry.h>
  29. #endif
  30. #ifndef __INTERRUPTS__
  31. #include <Interrupts.h>
  32. #endif
  33. #ifndef __IOITERATOR__
  34. #include <IOIterator.h>
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40.  
  41. #if PRAGMA_IMPORT_SUPPORTED
  42. #pragma import on
  43. #endif
  44.  
  45. #if PRAGMA_ALIGN_SUPPORTED
  46. #pragma options align=mac68k
  47. #endif
  48.  
  49. #if FOR_SYSTEM8_PREEMPTIVE
  50. typedef LogicalAddress PCIConfigAddress;
  51. typedef LogicalAddress PCIIOAddress;
  52. extern OSStatus PCIConfigReadByte(RegEntryRef *entry, PCIConfigAddress configAddr, UInt8 *value);
  53.  
  54. extern OSStatus PCIConfigReadWord(RegEntryRef *entry, PCIConfigAddress configAddr, UInt16 *value);
  55.  
  56. extern OSStatus PCIConfigReadLong(RegEntryRef *entry, PCIConfigAddress configAddr, UInt32 *value);
  57.  
  58. extern OSStatus PCIConfigWriteByte(RegEntryRef *entry, PCIConfigAddress configAddr, UInt8 value);
  59.  
  60. extern OSStatus PCIConfigWriteWord(RegEntryRef *entry, PCIConfigAddress configAddr, UInt16 value);
  61.  
  62. extern OSStatus PCIConfigWriteLong(RegEntryRef *entry, PCIConfigAddress configAddr, UInt32 value);
  63.  
  64. extern OSStatus PCIIOReadByte(RegEntryRef *entry, PCIIOAddress ioAddr, UInt8 *value);
  65.  
  66. extern OSStatus PCIIOReadWord(RegEntryRef *entry, PCIIOAddress ioAddr, UInt16 *value);
  67.  
  68. extern OSStatus PCIIOReadLong(RegEntryRef *entry, PCIIOAddress ioAddr, UInt32 *value);
  69.  
  70. extern OSStatus PCIIOWriteByte(RegEntryRef *entry, PCIIOAddress ioAddr, UInt8 value);
  71.  
  72. extern OSStatus PCIIOWriteWord(RegEntryRef *entry, PCIIOAddress ioAddr, UInt16 value);
  73.  
  74. extern OSStatus PCIIOWriteLong(RegEntryRef *entry, PCIIOAddress ioAddr, UInt32 value);
  75.  
  76. extern OSStatus PCIIntAckReadByte(RegEntryRef *entry, UInt8 *value);
  77.  
  78. extern OSStatus PCIIntAckReadWord(RegEntryRef *entry, UInt16 *value);
  79.  
  80. extern OSStatus PCIIntAckReadLong(RegEntryRef *entry, UInt32 *value);
  81.  
  82. extern OSStatus PCISpecialCycleWriteLong(RegEntryRef *entry, UInt32 value);
  83.  
  84. extern OSStatus PCISpecialCycleBroadcastLong(UInt32 value);
  85.  
  86. /* IOIteration model definitions for the PCI Family*/
  87. struct PCIIOIteratorData {
  88.     IOCommonInfo                     IOCI;
  89.     char                             Name[32];
  90.     UInt32                             Domain;
  91.     UInt32                             BusNumber;
  92.     UInt32                             ConfigAddress;
  93. };
  94. typedef struct PCIIOIteratorData PCIIOIteratorData;
  95.  
  96. /* get all pci device found*/
  97. extern OSStatus PCIGetDeviceData(ItemCount requestItemCount, ItemCount *totalItemCountPtr, PCIIOIteratorData *List);
  98.  
  99. /* get all pci device by a certain name*/
  100. extern OSStatus PCINameGetDeviceData(char *Name, ItemCount reqeustItemCount, ItemCount *totalItemCountPtr, PCIIOIteratorData *List);
  101.  
  102. /* get all pci device belonging to a certain domain*/
  103. extern OSStatus PCIDomainGetDeviceData(UInt32 Domain, ItemCount reqeustItemCount, ItemCount *totalItemCountPtr, PCIIOIteratorData *List);
  104.  
  105. /* get all pci devices belonging to a certain bus*/
  106. extern OSStatus PCIBusNumberGetDeviceData(UInt32 BusNumber, ItemCount reqeustItemCount, ItemCount *totalItemCountPtr, PCIIOIteratorData *List);
  107.  
  108. /* get a pci devices by its config address*/
  109. extern OSStatus PCIConfigAddressGetDeviceData(PCIConfigAddress ConfigAddress, ItemCount reqeustItemCount, ItemCount *totalItemCountPtr, PCIIOIteratorData *List);
  110.  
  111. /* bridge interrupt handler call*/
  112. extern OSStatus PCILookupParentMember(InterruptSetID theSet, InterruptSetMember *theParentSetMember)
  113.  TWOWORDINLINE(0x700B, 0xAAF4);
  114.  
  115. /* plugin access to interrupt disable calls*/
  116. extern InterruptState PCIDisableInterrupts(void );
  117.  
  118. extern void PCIRestoreInterrupts(InterruptState theState);
  119.  
  120. #endif
  121.  
  122. #if PRAGMA_ALIGN_SUPPORTED
  123. #pragma options align=reset
  124. #endif
  125.  
  126. #if PRAGMA_IMPORT_SUPPORTED
  127. #pragma import off
  128. #endif
  129.  
  130. #ifdef __cplusplus
  131. }
  132. #endif
  133.  
  134. #endif /* __PCIKERNEL__ */
  135.  
  136.